package com.atguigu.gulimall.product;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

/**
 *   1.逻辑删除
 *      1）、配置全局的逻辑删除规则
 *      2）、配置逻辑删除的组件bean
 *      3) 、给bean 加上逻辑删除注解@TableLogic
 *   2.JSR303
 *      1) 、给bean添加校验主键 javax.validation.constraints
 *      2) 、在接受参数时添加注解 @Valid
 *      3) 、给校验的bean 后紧跟一个BindingResult，就可以获取到校验的结果
 *      4）、分组校验
 *             1)、@NotBlank(message = "品牌名不能为空",groups = {UpdateGroup.class,AddGroup.class}) 给校验注解添加 group
 *             2)、 validated({AddGroup.class})
 *             3)、默认没有指定分组的检验注解@NotBlank,在分组校验情况下不生效，只会在@Validated 下生效
 *      5）、自定义校验
 *          1）、编写一个自定义的校验注解
 *          2）、编写一个自定义的校验器  ConstraintValidator
 *          3）、关联自定义的校验器和自定义的校验注解
 *
 *   3.统一的异常处理
 * @ControllerAdvice
 *      1)、编写异常处理类，使用@ControllerAdvice.
 *      2）、使用@ExceptionHandler标注方法可以处理的异常
 *
 *
 *      4.整合redis
 *      1)：引入data-redis-starter
 *      2）：简单配置redis的host等信息
 *      3）：使用springboot 自动配置 StringRedisTemplate
 *
 */

@EnableRedisHttpSession
@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
@SpringBootApplication
@MapperScan("com.atguigu.gulimall.product.dao")
@EnableDiscoveryClient
public class GulimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }

}
